#ifndef BULLET_H
#define BULLET_H

#include "definitions.h"

class Bullet
{
  double X = 0;
  double Y = 0;
  int Power = 0;
  double Speed = 0;
  int Range = 0; // area of effect
  double DestinationX = 0;
  double DestinationY = 0;
  Minion *Target = nullptr;
  void *Picture = nullptr;
  BulletFlags Flags = BulletFlags::BULLET_NONE;

  Bullet *NextBullet = nullptr; // next bullet in the list

public:
  Bullet(int NewPower, double NewX, double NewY, double NewDestinationX, double NewDestinationY,
         Minion *NewTarget, double NewSpeed, void *NewPicture, BulletFlags NewFlags, int NewRange);
  Bullet *Tick();
  void MinionRemovalNotification(Minion *RemovedMinion);

  double GetX();
  double GetY();
  Bullet *GetNextBullet();

  friend class Engine;
};

#endif // BULLET_H
